翻訳と辞書
Words near each other
・ ブロッカー軍団マシーンブラスター
・ ブロッガー
・ ブロッキング
・ ブロッキング (インターネット)
・ ブロッキング (映画)
・ ブロッキング (気象)
・ ブロッキング (舞台)
・ ブロッキング現象
・ ブロッキング高気圧
・ ブロック
ブロック (C言語拡張)
・ ブロック (データ)
・ ブロック (プログラミング)
・ ブロック (ライフゲーム)
・ ブロック (星のカービィ)
・ ブロック (曖昧さ回避)
・ ブロック ブレイカー デラックス
・ ブロック ブレーカー デラックス
・ ブロックD
・ ブロックM


Dictionary Lists
翻訳と辞書 辞書検索 [ 開発暫定版 ]
スポンサード リンク

ブロック (C言語拡張) : ウィキペディア日本語版
ブロック (C言語拡張)
ブロック(Blocks)はアップル社によるC言語Objective-CC++用の非標準の拡張であり、ラムダ式風の構文を用いてクロージャを作成する機能を提供する。ブロックはMac OS X 10.6以降とiOS 4.0以降向けのプログラムでサポートされるが、サードパーティ製ランタイムでMac OS X 10.5及びiOS 2.2以降でも使用可能である。〔https://code.google.com/p/plblocks/〕
ブロックは、Grand Central Dispatchスレッディングアーキテクチャーをより容易に記述できるようにするという明確な目的でアップルによって設計された〔Apple Technical Brief on Grand Central Dispatch , retrieved on June 9, 2009.〕〔Mac OS X 10.6 Snow Leopard: the Ars Technica review: Blocks 〕一方で、そのアーキテクチャーから独立して他のプログラミング言語のクロージャに類似した方法で使用することもできる。アップルはブロックをGNUコンパイラコレクションの自社のブランチと〔https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html〕Clang LLVMコンパイラフロントエンドに実装している。ブロックの言語ランタイムライブラリサポートはLLVMプロジェクトの一部で利用可能である。クロノスグループはブロック構文をOpenCLのバージョン2.0よりエンキューカーネルに使用している。〔http://www.khronos.org/registry/cl/specs/opencl-2.0-openclc.pdf#page=173〕
関数定義のように、ブロックは引数を持ち、内部でローカル変数を宣言することができる。一方で通常の関数定義とは違い、値は周囲のコンテキストから状況をとることもできる。ブロック定義はブロック内のコードへの参照及びその定義時のローカルのスタック変数の現在のスナップショットが含まれる不透明な値を生成する。ブロックは関数ポインタと同様に呼び出すことができる。
ブロックは変数に割り当てられたり、関数を越えたり、通常の関数ポインタのように使われるが、ブロックの範囲外で定義されたものを使用する際は特殊な演算子(Block_copy)でマークする必要がある。
ブロック値を与えると、ブロック内のコードは関数を呼び出す際と同じ構文を使用して、任意の時点で実行することができる。
== 例 ==
周囲のスコープに可変のステートを取り出す簡単な例として、整数範囲イテレータがあげられる。〔:


#include
#include
typedef int (^IntBlock)();
IntBlock MakeCounter(int start, int increment)
int main(void)
/
* 出力:

抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)
ウィキペディアで「ブロック (C言語拡張)」の詳細全文を読む



スポンサード リンク
翻訳と辞書 : 翻訳のためのインターネットリソース

Copyright(C) kotoba.ne.jp 1997-2016. All Rights Reserved.